package com.person.pay.config;

import com.lly835.bestpay.config.AliPayConfig;
import com.lly835.bestpay.config.WxPayConfig;
import com.lly835.bestpay.service.BestPayService;
import com.lly835.bestpay.service.impl.BestPayServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

/**
 * @author 最酷的桃儿wjc
 * * @date 2022/5/11
 */
//Compponent代表把这个类交给Spring容器进行处理
@Component
public class BestPayConfig {
    //作用在方法上，声明当前方法的返回值是一个 Bean
    @Autowired
    private WxAccountConfig wxAccountConfig;

    @Autowired
    private AliPayAccountConfig aliPayAccountConfig;
    @Bean
    public BestPayService bestPayService(WxPayConfig wxPayConfig){
        /**
         * 支付宝支付配置
         *
         */
        AliPayConfig aliPayConfig = new AliPayConfig();
        aliPayConfig.setAppId(aliPayAccountConfig.getAppId());
        //商户私钥匙
        aliPayConfig.setPrivateKey(aliPayAccountConfig.getPrivateKey());
        //支付宝公钥
        aliPayConfig.setAliPayPublicKey(aliPayAccountConfig.getPublicKey());
        aliPayConfig.setNotifyUrl(aliPayAccountConfig.getNotifyUrl());
        aliPayConfig.setReturnUrl(aliPayAccountConfig.getReturnUrl());
        //支付类, 所有方法都在这个类里
        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        //设置微信支付配置
        bestPayService.setWxPayConfig(wxPayConfig);
        //设置支付支付配置
        bestPayService.setAliPayConfig(aliPayConfig);
        return bestPayService;
    }

    @Bean
    public WxPayConfig wxPayConfig(){
        WxPayConfig wxPayConfig = new WxPayConfig();
        /**
         * 微信支付配置
         * 依次代表，目前只需要这4个，发起支付时不需要证书
         * 1.appid
         * 2.商户号
         * 3.商户密钥
         * 4.支付结果的异步通知
         */
        wxPayConfig.setAppId(wxAccountConfig.getAppId());
        wxPayConfig.setMchId(wxAccountConfig.getMchId());
        wxPayConfig.setMchKey(wxAccountConfig.getMchKey());
        //内网穿透的映射地址
        wxPayConfig.setNotifyUrl(wxAccountConfig.getNotifyUrl());
        wxPayConfig.setReturnUrl(wxAccountConfig.getReturnUrl());
        return wxPayConfig;
    }
}
